**********************************************.
* Final production run of program to merge    .
* various datasets existing in in SPSS format .
* to create analysis dataset for SPPQ paper   .
* Leonard Ray October 2004                    .
**********************************************.

* This section of code merges three datasets on state attorneys general.
* ags.sav       Historical data on AG's and NAAG training.
* naagbudgt.sav NAAG budget numbers already adjusted for inflation.
* naagstaff.sav NAAG staff and salary data and state level CPI numbers.

* linear interpolation is used to fill in missing data on staff and salary.

MATCH FILES /FILE "C:\My Documents\research\COA_AG\ags.sav"
            /FILE "C:\My Documents\research\COA_AG\naagbudgt.sav"
            /FILE "C:\My Documents\research\COA_AG\naagstaffandcpi.sav"
            /BY STATE YEAR.

* Counting each part time attorney as half a full time attorney.
recode ptattny (sysmis=0).
compute attnys=(fullattn+.5*ptattny).

* interpolation to fill in missing staff, salary, and budget data.
MISSING VALUES naagbud staff realsal(0).
RMV salary_i = LINT(realsal).
RMV staff_i = LINT(staff).
RMV attny_i = LINT(attnys).
RMV other_i = LINT(other).
RMV budgeti = LINT(naagbud).
RMV entry_i = LINT(entry_rl).
RMV entsal_i = LINT(entrysal).


compute entsal_x = entsal_i *(100/statecpi).
compute bgtpcap = budgeti/statepop.
VARIABLE LABELS attnys 'total attorneys incl part time attorneys as 1/2'.
VARIABLE LABELS bgtpcap 'NAAG budget in 1999 dollars per capita'.
VARIABLE LABELS entsal_x 'entry level salary adjusted for inflation and state cost of living'.
execute.

COMPUTE service = (year-firstyr) +1 .
VARIABLE LABELS service 'Years of service' .
EXECUTE .
COMPUTE logsrvc = ln(service) .
VARIABLE LABELS logsrvc 'log of years of service' .
EXECUTE .


*measure for first term AG.
compute term1=0.
if (service le 4) term1=1.

SAVE OUTFILE='C:\My Documents\research\COA_AG\TEMP\fullags.sav'.

********************************************************************.

* THIS SECTION MERGES JUDICIAL CHARACTERISTIC DATA FROM AUBURN WITH CASE DATA FROM SONGER.

** MERGING IN PANEL CHARACTERISTICS.
MATCH FILES FILE='C:\My Documents\research\COA_Ag\CoAdata.sav'
           /FILE='C:\My Documents\research\COA_AG\TEMP\PANELS.sav'
           /BY CASENUM.
EXECUTE.

** MERGING IN CIRCUIT CHARACTERISTICS.
SORT CASES BY year circuit.
MATCH FILES FILE=*
           /TABLE='C:\My Documents\research\COA_AG\TEMP\circuits.sav'
           /BY year circuit.
EXECUTE.

SAVE OUTFILE='C:\My Documents\research\COA_AG\TEMP\temp.sav'.
EXECUTE.


********************************************************************.
* THIS SECTION MERGES EXTRACTed CASES WITH AG INVOLVEMENT.
* AND DUPLICATES RECORDS FOR STATE VS STATE CASES.

* writing out cases with AG's as appelant counsel.
* reading in smaller version of SONGER data.
GET FILE='C:\My Documents\research\COA_AG\TEMP\TEMP.sav'.
*Selecting cases with AG as counsel for appellant.
SELECT IF (counsel1 eq 6).
SELECT IF (ap_stid le 50).
COMPUTE agstate=ap_stid.
COMPUTE PETITION=1.
SAVE OUTFILE='C:\My Documents\research\COA_AG\TEMP\AGappel.sav'.

*writing out cases with AG's as respondent counsel.
* reading in smaller version of SONGER data.
GET FILE='C:\My Documents\research\COA_AG\TEMP\TEMP.sav'.
*Selecting cases with AG as counsel for repondent.
SELECT IF (counsel2 eq 6).
SELECT IF (r_stid le 50).
COMPUTE agstate=r_stid.
COMPUTE PETITION=0.
SAVE OUTFILE='C:\My Documents\research\COA_AG\TEMP\AGresp.sav'.

* Merging appelant and respondent cases.
* to create double entries for AG vs AG cases.
ADD FILES FILE='C:\My Documents\research\COA_AG\TEMP\AGappel.sav'
         /FILE='C:\My Documents\research\COA_AG\TEMP\AGresp.sav'
         /DROP=state.

*creating dummy for petitioner or respondent victory.
* "P" petitioner victory  "R" respondent victory.
string winner (A1).
compute winner=' '.
if (treat eq 1 or treat eq 8) winner = 'R'.
if (treat eq 0 or treat eq 2 or treat eq 3
 or treat eq 4 or treat eq 7) winner = 'P'.

*creating dummy for AG victory or loss.
* 1 equals win, 0 equals loss.
numeric agwin.
compute agwin = 0.
if (counsel1 eq 6 and winner eq 'P') agwin = 1.
if (counsel2 eq 6 and winner eq 'R') agwin = 1.

*creating dummy for Criminal cases.
compute criminal=0.
if (typeiss eq 1) criminal=1.

*creating circuit dummies.
compute circdc  =0.
compute circ1  =0.
compute circ2  =0.
compute circ3  =0.
compute circ4  =0.
compute circ5  =0.
compute circ6  =0.
compute circ7  =0.
compute circ8  =0.
compute circ9  =0.
compute circ10 =0.
compute circ11 =0.

if (circuit eq 0)  circdc=1.
if (circuit eq 1)  circ1 =1.
if (circuit eq 2)  circ2 =1.
if (circuit eq 3)  circ3 =1.
if (circuit eq 4)  circ4 =1.
if (circuit eq 5)  circ5 =1.
if (circuit eq 6)  circ6 =1.
if (circuit eq 7)  circ7 =1.
if (circuit eq 8)  circ8 =1.
if (circuit eq 9)  circ9 =1.
if (circuit eq 10) circ10=1.
if (circuit eq 11) circ11=1.


STRING state (A2).
IF (agstate EQ 1) state = 'AL'.
IF (agstate EQ 2) state = 'AK'.
IF (agstate EQ 3) state = 'AZ'.
IF (agstate EQ 4) state = 'AR'.
IF (agstate EQ 5) state = 'CA'.
IF (agstate EQ 6) state = 'CO'.
IF (agstate EQ 7) state = 'CT'.
IF (agstate EQ 8) state = 'DE'.
IF (agstate EQ 9) state = 'FL'.
IF (agstate EQ 10) state = 'GA'.
IF (agstate EQ 11) state = 'HI'.
IF (agstate EQ 12) state = 'ID'.
IF (agstate EQ 13) state = 'IL'.
IF (agstate EQ 14) state = 'IN'.
IF (agstate EQ 15) state = 'IA'.
IF (agstate EQ 16) state = 'KS'.
IF (agstate EQ 17) state = 'KY'.
IF (agstate EQ 18) state = 'LA'.
IF (agstate EQ 19) state = 'ME'.
IF (agstate EQ 20) state = 'MD'.
IF (agstate EQ 21) state = 'MA'.
IF (agstate EQ 22) state = 'MI'.
IF (agstate EQ 23) state = 'MN'.
IF (agstate EQ 24) state = 'MS'.
IF (agstate EQ 25) state = 'MO'.
IF (agstate EQ 26) state = 'MT'.
IF (agstate EQ 27) state = 'NE'.
IF (agstate EQ 28) state = 'NV'.
IF (agstate EQ 29) state = 'NH'.
IF (agstate EQ 30) state = 'NJ'.
IF (agstate EQ 31) state = 'NM'.
IF (agstate EQ 32) state = 'NY'.
IF (agstate EQ 33) state = 'NC'.
IF (agstate EQ 34) state = 'ND'.
IF (agstate EQ 35) state = 'OH'.
IF (agstate EQ 36) state = 'OK'.
IF (agstate EQ 37) state = 'OR'.
IF (agstate EQ 38) state = 'PA'.
IF (agstate EQ 39) state = 'RI'.
IF (agstate EQ 40) state = 'SC'.
IF (agstate EQ 41) state = 'SD'.
IF (agstate EQ 42) state = 'TN'.
IF (agstate EQ 43) state = 'TX'.
IF (agstate EQ 44) state = 'UT'.
IF (agstate EQ 45) state = 'VT'.
IF (agstate EQ 46) state = 'VA'.
IF (agstate EQ 47) state = 'WA'.
IF (agstate EQ 48) state = 'WV'.
IF (agstate EQ 49) state = 'WI'.
IF (agstate EQ 50) state = 'WY'.

*recoding state for cases with missing state id.
DO IF (agstate EQ 0).
IF (casenum EQ   3043.00) state = 'IL'.
IF (casenum EQ   3059.00) state = 'IL'.
IF (casenum EQ   3140.00) state = 'KS'.
IF (casenum EQ   2553.00) state = 'NY'.
IF (casenum EQ   2715.00) state = 'IL'.
IF (casenum EQ   2757.00) state = 'IL'.
IF (casenum EQ   2334.00) state = 'OH'.
IF (casenum EQ   2355.00) state = 'IL'.
IF (casenum EQ   2475.00) state = 'AL'.
IF (casenum EQ   1891.00) state = 'MD'.
IF (casenum EQ   1978.00) state = 'KY'.
IF (casenum EQ   1832.00) state = 'NY'.
IF (casenum EQ   2078.00) state = 'UT'.
IF (casenum EQ   1576.00) state = 'TX'.
IF (casenum EQ   1766.00) state = 'FL'.
IF (casenum EQ   1659.00) state = 'MO'.
IF (casenum EQ   1750.00) state = 'FL'.
IF (casenum EQ   1128.00) state = 'NY'.
IF (casenum EQ   1119.00) state = 'NY'.
IF (casenum EQ   1386.00) state = 'FL'.
IF (casenum EQ    950.00) state = 'SD'.
IF (casenum EQ    771.00) state = 'CT'.
IF (casenum EQ   1008.00) state = 'OK'.
IF (casenum EQ   1039.00) state = 'AL'.
IF (casenum EQ    551.00) state = 'IL'.
IF (casenum EQ    548.00) state = 'IL'.
IF (casenum EQ    576.00) state = 'MO'.
IF (casenum EQ    689.00) state = 'GA'.
IF (casenum EQ    216.00) state = 'NE'.
IF (casenum EQ    124.00) state = 'TX'.
IF (casenum EQ    139.00) state = 'LA'.
END IF.

SELECT IF (state NE "").

* marker for largest state per circuit.
compute biggest=0.
if state eq "MA" biggest=1.
if state eq "NY" biggest=1.
if state eq "PA" biggest=1.
if state eq "NC" biggest=1.
if state eq "TX" biggest=1.
if state eq "OH" biggest=1.
if state eq "IL" biggest=1.
if state eq "MO" biggest=1.
if state eq "CA" biggest=1.
if state eq "CO" biggest=1.
if state eq "FL" biggest=1.
execute.

********************************************************************************.

*   CREATING YET MORE VARIABLES USED IN ANALYSIS OF AG SUCCESS IN APPELATE COURTS   .

*********************************************************************************.


*STRONG OPPONENT VARIABLE.
compute strgopp = 0 .
VARIABLE LABELS strgopp 'strong opposition' .
EXECUTE .
DO IF (((petition=0)  &  ((genapel1=1) or (genapel1=3))) ) .
RECODE
  strgopp  (0=1)  .
END IF .
EXECUTE .
DO IF (((petition=1)  &  ((genresp1=1) or (genresp1=3))) ).
RECODE
   strgopp (0=1) .
END IF.
EXECUTE .

*CASE COMPLEXITY VARIABLE.
COMPUTE opinlgth = (endpage-beginpg).
VARIABLE LABELS opinlgth 'Length of the opinion for complexity'.

COMPUTE complex=0.
IF (opinlgth GT 6.6) complex = 1.
VARIABLE LABELS complex 'decisions over 6 pages are complex'.
EXECUTE.


** Computing two measures of USSC pro state orientation.
**proscdum is a dummy coded 1 after thomas completes the pro state bloc.
COMPUTE proscdum = 0.
VARIABLE LABEL proscdum 'Dummy for Pro-state Supreme bloc'.
DO IF year>1991 .
RECODE
 proscdum  (0=1)  .
END IF .
EXECUTE .

**proussc is a count of pro state justices on the USSC.
COMPUTE proussc = 0.
VARIABLE LABEL proussc 'Count for Pro-state Supreme bloc'.
*Rehnquist appointment equals 1 lagged one year for effect.
DO IF ((year>1971) & (year < 1982)).
RECODE
  proussc (0=1).
END IF.
EXECUTE.
*O'Connor equals 2.
DO IF ((year>1981) & (year < 1987)).
RECODE
  proussc (0=2).
END IF.
EXECUTE.
*Scalia equals 3.
DO IF ((year>1986) & (year < 1989)).
RECODE
  proussc (0=3).
END IF.
EXECUTE.
*Kennedy equals 4.
DO IF ((year>1988) & (year < 1991)).
RECODE
  proussc (0=4).
END IF.
EXECUTE.
DO IF year>1991 .
RECODE
 proussc  (0=5)  .
END IF .
EXECUTE.


** dummy variable for economic cases.
COMPUTE economic=0.
VARIABLE LABEL economic 'economic case'.

DO IF ((geniss = 6) | (geniss = 7)).
RECODE 
economic (0=1).
END IF.
execute.

*Creating criminal petitioner variable.
*To create the interaction term, I need to reverse the coding on the petition variable, so that the interaction codes 
criminal petitioners as 1.

COMPUTE pet2=0.
execute.
DO IF petition=1.
RECODE 
  pet2 (0=1).
END IF.
DO IF petition=0.
RECODE 
  pet2 (1=0).
END IF. 
EXECUTE.
compute crimpet=criminal*pet2.
VARIABLE LABEL crimpet 'criminal petitions interaction'. 
execute.

**creating prisoner appelant cases term.
* identify appeals by individuals.
IF (genapel1 = 7) indiv=1.
IF (genapel1 ~= 7) indiv=0.
EXECUTE.

*identify civil prisoner cases.
IF ((casetyp1 = 201) | (casetyp1 = 202) | (casetyp1 = 203) | (casetyp1 =204) | (casetyp1 =205) | (casetyp1 =206) |
(casetyp1 =207) | (casetyp1 = 208) | (casetyp1 =209)) civpris =1.
IF ((casetyp1<201) | (casetyp1 >209)) civpris=0.
EXECUTE.

*Dummy for prisoner appellants.
COMPUTE defpris=0.
DO IF ((indiv = 1) & ((geniss = 1)| (civpris=1))).
RECODE 
defpris (0=1).
END IF.
VARIABLE LABEL defpris 'prisoner appellant'.
EXECUTE.

*dummy for private party economic appeals.
COMPUTE private=0.
IF (indiv eq 1) private =1.
compute pveconap=economic*(1-petition)*private.
VARIABLE LABEL pveconap 'private economi apellant'.
EXECUTE.


*.
COMPUTE demmaj=0.
VARIABLE LABEL demmaj 'panel of judges has a democratic majority'.
DO IF (dempanel GT .5).
RECODE
demmaj (0=1).
END IF.
EXECUTE.


*******.
**Creating indicator for policy cases.
*identify reversals.
IF ((treat=2)| (treat=3)| (treat=4)) reverse = 1 .
IF ((treat<2)| (treat>4)) reverse = 0. 
VARIABLE LABELS reverse 'did the circuit reverse in any form or fashion?' .
*identify dissents.
IF ((reverse=1) | (dissent>0)) policy = 1.
IF ((reverse=0) & (dissent=0)) policy = 0.
VARIABLE LABELS policy 'case that either reversed the lower court or had a dissent'.
EXECUTE.


**creating a variable to determine directionality of lower court decision.
**when we do this, we lose the cases that are reversed and affirmed in part.  
**this totals about 130 cases.
**this variable can also be used to label the directionality of the petitioner and respondent in each case.

IF (((treat=2) | (treat=3)|(treat=4)|(treat=7)) & direct1=1) lwrctdir = 3 .
VARIABLE LABELS lwrctdir 'directionality of lower court decision' .
IF (((treat=2) | (treat=3)|(treat=4)|(treat=7)) & direct1=3) lwrctdir = 1 .
IF (((treat=1) | (treat=8)) & direct1=3) lwrctdir=3.
IF (((treat=1) | (treat=8)) & direct1=1) lwrctdir=1.
EXECUTE .

**Now creating a variable indicating the directionality of the state's position based upon whether the state is petitioning or responding and the direction of the lower court decision.

IF (petition=1) & (lwrctdir=3) statideo=1.
IF (petition=0) & (lwrctdir=3) statideo=-1.
IF (petition=1) & (lwrctdir=1) statideo=-1.
IF (petition=0) & (lwrctdir=1) statideo=1.
VARIABLE LABELS statideo 'directionality of state side'.
EXECUTE.

* variable for ideological agreement of state brief and panel.
compute agree_p=statideo*nompanel.
VARIABLE LABELS agree_p 'ideological agreement of state brief and panel'.

* variable for ideological agreement of state brief and circuit.
compute agree_c=statideo*nominate.

sort cases by state year circuit.
SAVE OUTFILE='C:\My Documents\research\COA_AG\TEMP\AGCASES.sav'.
execute.

MATCH FILES FILE='C:\My Documents\research\COA_AG\TEMP\AGCASES.sav'
           /TABLE='C:\My Documents\research\COA_AG\TEMP\fullags.sav'
           /BY state year.

**** AG / Panel party agreement .
RECODE
  party
  (1=-1)  (0=1)  INTO  agptyrev .
VARIABLE LABELS agptyrev 'ag party with dems as 1'.
execute.
RECODE
  demmaj
  (1=1)  (0=-1)  INTO  dempmajr .
VARIABLE LABELS agptyrev 'ag party with dems as 1 and reps as -1'.
VARIABLE LABELS dempmajr 'panel party with reps as -1'.
compute agpanel2=agptyrev*dempmajr.
VARIABLE LABELS agpanel2 'ag and panel of judges are same party' .
execute.

******************************************************************.
Writing out data used for LOGIT and Clarify analyses of AG success.
******************************************************************.

SAVE OUTFILE='C:\My Documents\research\COA_AG\analysis.sav'.
EXECUTE.

********************** END OF SYNTAX **************************.